package com.yxw.live_vod_facade.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 订单VO
 * @author xiexuxin
 * @date 2023-12-08
 */
@Data
@ApiModel(value="OrderVO", description="订单VO")
public class OrderVO implements Serializable {

    @ApiModelProperty("订单Id")
    private Long orderId;

    @ApiModelProperty("订单号")
    private String orderNum;

    @ApiModelProperty("店铺Id")
    private Long shopId;

    @ApiModelProperty("店铺名称")
    private String shopName;

    @ApiModelProperty("用户ID")
    private Long userId;

    @ApiModelProperty("用户名称")
    private String userName;

    @ApiModelProperty("用户手机号")
    private String userPhone;

    @ApiModelProperty("订单状态 0:待支付 1:待使用/核销 2:订单取消 3:订单完成 4:退款成功")
    private Integer orderStatus;

    @ApiModelProperty("商品订单价")
    private BigDecimal productAmount;

    @ApiModelProperty("实际支付")
    private BigDecimal actualAmount;

    @ApiModelProperty("支付方式")
    private String paymentWay;

    @ApiModelProperty("下单时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date orderTime;

    @ApiModelProperty("完成时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date completionTime;

    @ApiModelProperty("退款时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date refundTime;

    @ApiModelProperty("退款原因")
    private String refundReason;

    @ApiModelProperty("订单来源 0:直播间 1:点播 2:橱窗")
    private Integer orderSource;

    @ApiModelProperty("商品ID")
    private Long productId;

    @ApiModelProperty("商品图片")
    private String productPic;

    @ApiModelProperty("商品名称")
    private String productName;

    @ApiModelProperty("类目ID")
    private Long categoryId;

    @ApiModelProperty("商品类目")
    private String productCategory;

    @ApiModelProperty("商品数量")
    private Integer productQuantity;

    @ApiModelProperty("规格ID")
    private Long specificationId;

    @ApiModelProperty("商品规格")
    private String productSpecification;

    @ApiModelProperty("订单券码")
    private Integer orderCouponNum;

    @ApiModelProperty("订单券码状态 0: 待核销 1:已核销 2:失效(失效 = 客户取消订单或者退款之后设置为失效)")
    private Integer orderCouponStatus;

    @ApiModelProperty("备注")
    private String remark;

}
